package com.service.admin;

import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * 管理员举报处理的接口
 *
 * 
 */
public interface AdminReportService {

  /**
   * 获取所有商品举报的数目
   *
   * @return 所有商品举报的数目、未处理数目
   */
  Map<String, Integer> getAllGoodReportCount();

  /**
   * 获取所有商品举报信息
   *
   * @param pageSize 页大小
   * @param pageIndex 页索引
   * @return 商品举报列表
   */
  List<Map<String, Object>> getAllGoodReport(int pageSize, int pageIndex);

  /**
   * 获取所有评论举报的数目
   *
   * @return 所有商品举报的数目、未处理数目
   */
  Map<String, Integer> getAllCommentReportCount();

  /**
   * 获取所有评论举报信息
   *
   * @param pageSize 页大小
   * @param pageIndex 页索引
   * @return 评论举报列表
   */
  List<Map<String, Object>> getAllCommentReport(int pageSize, int pageIndex);

  /**
   * 获取管理员下架商品记录的数量
   *
   * @return 管理员下架商品记录的数量
   */
  int getManagerPutOffGoodCount();

  /**
   * 获取管理员直接下架的商品
   *
   * @param pageSize 页大小
   * @param pageIndex 页索引
   * @return 管理员直接下架的商品列表
   */
  List<Map<String, Object>> getManagerPutOffGood(int pageSize, int pageIndex);

  /**
   * 获取管理员下架评论记录的数量
   *
   * @return 管理员下架评论记录的数量
   */
  int getManagerPutOffCommentCount();

  /**
   * 获取管理员直接下架的评论
   *
   * @param pageSize 页大小
   * @param pageIndex 页索引
   * @return 管理员直接下架的评论列表
   */
  List<Map<String, Object>> getManagerPutOffComment(int pageSize, int pageIndex);

  /**
   * 处理一条商品举报
   *
   * @param adminName 管理员姓名
   * @param reportId 举报编号
   * @param result 处理结果：1为提醒，2为警告，3为终止卖书
   * @param replyInformer 回复举报者的模板
   * @param noticeSeller 回复卖家模板
   * @return 处理成功返回1，失败返回0
   */
  int dealGoodReport(
      String adminName, String reportId, int result, String replyInformer, String noticeSeller);

  /**
   * 处理一条商品举报
   *
   * @param adminName 管理员姓名
   * @param reportId 举报编号
   * @param result 处理结果：1为提醒，2为警告，3为禁止永久评论
   * @param banDays 禁言天数
   * @param replyInformer 回复举报者的模板
   * @param noticeCommentUser 通知评论者的模板
   * @return 处理成功返回1，失败返回0
   */
  int dealCommentReport(
      String adminName,
      String reportId,
      int result,
      int banDays,
      String replyInformer,
      String noticeCommentUser);

  /**
   * 设置商品不合格
   *
   * @param adminName 管理员姓名
   * @param goodId 商品编号
   * @param type 举报类型
   * @param reason 举报原因
   * @param pic1 证据截图1
   * @param pic2 证据截图2
   * @param pic3 证据截图3
   * @param result 处理结果：1为提醒，2为警告，3为终止卖书
   * @param noticeSeller 回复卖家模板
   * @return 成功返回1，失败返回0
   */
  int setGoodUnqualified(
      String adminName,
      String goodId,
      String type,
      String reason,
      MultipartFile pic1,
      MultipartFile pic2,
      MultipartFile pic3,
      int result,
      String noticeSeller);

  /**
   * 设置评论不合格
   *
   * @param adminName 管理员名
   * @param commentId 评论编号
   * @param type 举报类型
   * @param reason 举报原因
   * @param result 处理结果：1为提醒，2为警告，3为永久禁止评论
   * @param banDays 禁言天数
   * @param noticeCommentUser 回复模板
   * @return 成功返回1，失败返回0
   */
  int setCommentUnqualified(
      String adminName,
      String commentId,
      String type,
      String reason,
      int result,
      int banDays,
      String noticeCommentUser);
}
